In radio frequency identification (RFID) systems involving container security, an RFID seal is electronically locked to secure a container, conveyance, or other item whose security state is to be monitored by a host system. For accurate knowledge of the security state, the state of the seal must always be synchronized with the state as stored by the host system. However, situations may arise in which simple seal device read or write commands can result in a loss of synchronization; and restoration of synchronization in these situations can be difficult. In addition, if a host needs to execute a series of read and write requests as a transaction, requiring either atomicity or isolation from transactions with other hosts, basic read/write seal operations are inadequate.
One solution is the use of two-phase commit processing. In traditional two-phase commit processes, changes required by a transaction initially are temporarily stored by each entity involved in the process. The first phase is a pre-commit, in which each entity prepares for the transaction. Upon acknowledgement by each entity, the second phase is a commit, in which all entities make the transaction changes permanent. This process enables entities to be returned to the pre-transaction state if an error occurs, a process known as rollback. This ensures that all entities are updated or none at all.
However, some security state situations involve the use of irreversible seal operations. Certain seal operations may be used that change the internal state of the seal in a way that is not undoable; these are known as irreversible seal operations. For example, in the context of security state updates, seal states cannot be rolled back once locked because of security implications. After locking, a seal key is generated, and the seal state is irreversible.
In addition, some situations may arise in which multiple hosts and readers can be in contact with a seal device. For example, if a process requires a first host to both read and write data to the same location, e.g., a seal device, and a second host executes the read step after the first host has read the seal but before it has written to it, the second host may make its decision on what to write for its write step incorrectly, since it has read “stale” data. Another example exists when a host needs to write data to a series of seal memory locations and have all of the writes executed atomically or not at all.
Note that these problems may occur even in the absence of multiple hosts with the potential of communicating to the same seal device. With the presence of multiple hosts talking to the same tag, these problems are exacerbated. In these situations, conventional two-state phase commit processing for synchronization, in which data may be rolled back, cannot be used.